package com.yw.pms.controller;

import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yw.pms.dao.entity.Operator;
import com.yw.pms.dao.entity.Product;
import com.yw.pms.service.ProductService;
import com.yw.pms.utils.CommonResp;

/**
 * @Description: 产品管理控制器
 * @author Tenny.Tang
 * @date 2017年12月20日 下午3:06:05
 */
@Controller
@RequestMapping("/product")
public class ProductController {

	@Resource
	private ProductService productService;

	@RequestMapping("/toAddProduct")
	String toAddProductPage() {
		return "addProduct";
	}
	
	@RequestMapping(value = "/addProduct", method = RequestMethod.POST)
	@ResponseBody
	CommonResp<Boolean> addProduct(Product product, HttpSession session) {
		Operator operator = getOperator(session);
		product.setOperatorId(operator.getId());
		return productService.addProduct(product);
	}
	
	/**
	 * @Description: 产品列表查询
	 * @author Tenny.Tang
	 * @date 2017年12月21日 下午3:00:01
	 */
	@RequestMapping("/productList")
	@ResponseBody CommonResp<List<Product>> productList(Product product){
		return productService.queryProductList(product);
	}
	
	/**
	 * @Description: 删除产品
	 * @author Tenny.Tang
	 * @date 2017年12月22日 上午10:00:01
	 */
	@RequestMapping("/deleteProduct")
	@ResponseBody
	CommonResp<Boolean> deleteProduct(String id) {
		return productService.deleteProduct(id);
	}
	
	/**
	 * @Description: 跳转到更新产品页面
	 * @author Tenny.Tang
	 * @date 2017年12月22日 上午10:23:41
	 */
	@RequestMapping("/gotoUpdateProduct")
	String gotoUpdate(String id,Model model,HttpSession session){
		CommonResp<Product> resp = productService.get(id);
		if(resp.isSuccess()) {
			model.addAttribute("product", resp.getData());
		}
		Operator operator= getOperator(session);
		model.addAttribute("operator", operator);
		return "updateProduct";
	}
	
	/**
	 * @Description: 更新产品页面
	 * @author Tenny.Tang
	 * @date 2017年12月22日 上午14:23:41
	 */
	@RequestMapping("/updateProduct")
	@ResponseBody CommonResp<Boolean> updateProduct(Product product){
		return productService.updateProduct(product);
	}
	
	/**
	 * @Description: 查询所有的产品供模块维护展示使用
	 * @author Tenny.Tang
	 * @date 2017年12月25日 下午3:00:01
	 */
	@RequestMapping("/allProduct")
	@ResponseBody CommonResp<List<Product>> allProduct(Model model, Product product){
		return productService.getAllProduct(product);
	}
	
	/**
	 * 
	 * @Description: 验证产品名称的唯一性
	 * @author Tenny.Tang
	 * @date 2017年12月22日 上午10:53:41
	 */
	@RequestMapping(value="/isProductNameUniq",method=RequestMethod.POST)
	@ResponseBody CommonResp<Boolean> isProductNameUniq(String productName, String id){
		return productService.isProductNameUniq(productName, id);
	}
	
	private Operator getOperator(HttpSession session) {
		Operator operator = (Operator) session.getAttribute("operator");
		return operator;
	}
}
